package com.qfedu.common.utils;

import io.jsonwebtoken.*;

import java.util.Date;
import java.util.Map;

/**
 * 2024/12/26 上午9:49
 *
 * @author Dang.M.H
 * jwt 工具类
 */

public class JwtUtils {
    // 密钥
    private final static String secret = "123456789qwertyui";

    /**
     * 生成jwt
     *
     * @param claims 载荷
     */
    public static String createJwt(Map<String, Object> claims) {

        // 签名算法，表示sha256
        SignatureAlgorithm signatureAlgorithm = SignatureAlgorithm.HS256;

        //构造jwt
        // 设置头 //.setHeaderParam("type","jwt")
        JwtBuilder builder = Jwts.builder()
                // 设置载荷
                .setClaims(claims)
                // 设置过期时间
                .setExpiration(new Date(System.currentTimeMillis() + 18000000))
                // 使用指定算法设置签名
                .signWith(signatureAlgorithm, secret);
        //生成jwt
        return builder.compact();
    }

    /**
     * 解析，如果不符合，报异常
     */
    public static Claims parseJWT(String jsonWebToken) {
        try {
            Claims claims = Jwts.parser()
                    .setSigningKey(secret)
                    .parseClaimsJws(jsonWebToken).getBody();
            return claims;
        } catch (Exception ex) {
            throw new RuntimeException(ex.getMessage());
        }
    }

}
